/**
 * Created by guany on 2017/1/11.
 */

var _ = require("underscore")._;
var $conf = require('./conf/conf');
var log4js = require('log4js');
log4js.configure($conf.log4js);
var log = log4js.getLogger('normal');
log.setLevel('INFO');

var logger = {
    info:function (msg) {
        if(_.isString(msg)){
            log.info(msg);
        }else if(_.isNumber(msg)){
            log.info(msg.toString());
        }else if(_.isBoolean(msg)){
            log.info(msg?"true":"false");
        }else if(_.isDate(msg)){
            var year = msg.getFullYear();
            var month = msg.getMonth()+1;
            var day = msg.getDate();
            var hour = msg.getHours();
            var minutes = msg.getMinutes();
            var seconds = msg.getSeconds();
            log.info(""+year+"-"+(month<10?("0"+month):month)+"-"+(day<10?("0"+day):day)+" "+(hour<10?("0"+hour):hour)+":"+(minutes<10?("0"+minutes):minutes)+":"+(seconds<10?("0"+seconds):seconds));
        }else if(_.isEmpty(msg)){
            log.info("Empty");
        }else if(_.isNaN(msg)){
            log.info("Nan");
        }else if(_.isNull(msg)){
            log.info("Null");
        }else if(_.isFinite(msg)){
            log.info("Finite");
        }else if(_.isUndefined(msg)){
            log.info("Undefined");
        }else if(_.isObject(msg)){
            log.info(JSON.stringify(msg));
        }else if(_.isArray(msg)){
            log.info(msg.join(","));
        }
    },
    use:function(app) {
        app.use(log4js.connectLogger(log, {level: 'auto', format: ':method  :url'}));
    }
};
module.exports = logger;